//package dfl.bysj.util;
//
//
//import com.auth0.jwt.JWT;
//import com.auth0.jwt.JWTVerifier;
//import com.auth0.jwt.algorithms.Algorithm;
//import com.auth0.jwt.exceptions.JWTDecodeException;
//import com.auth0.jwt.interfaces.DecodedJWT;
//import dfl.bysj.exception.UnifiedException;
//
//import java.io.UnsupportedEncodingException;
//import java.util.Date;
//
//public class JWTUtils {
//    public static final String AUTH_HEADER_KEY = "Authorization";
//
//    public static final String TOKEN_PREFIX = "DFL ";
//    /**
//     * 过期时间一周
//     */
//    private static final long EXPIRE_TIME = 7 * 24 * 60 * 60 * 1000;
//
//    private static final String secret = "43dcbc5b-8776-429e-b122-3cae6bd97020";
//
//    /**
//     * 校验token是否正确
//     *
//     * @param token 密钥
//     * @return 是否正确
//     */
//    public static boolean verify(String token) {
//        try {
//            Algorithm algorithm = Algorithm.HMAC256(secret);
//            JWTVerifier verifier = JWT.require(algorithm)
//                    .build();
//            DecodedJWT jwt = verifier.verify(token);
//            return true;
//        } catch (Exception exception) {
//            return false;
//        }
//    }
//
//    /**
//     * 获得token中的信息无需secret解密也能获得
//     *
//     * @return token中包含的id
//     */
//    public static Long getUserId(String token) {
//        try {
//            DecodedJWT jwt = JWT.decode(token);
//            return jwt.getClaim("id").asLong();
//        } catch (JWTDecodeException e) {
//           throw new UnifiedException("token错误");
//        }
//    }
//
//    /**
//     * 签发token
//     *
//     * @return 加密的token
//     */
//    public static String sign(Integer id) {
//        try {
//            Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME);
//            Algorithm algorithm = Algorithm.HMAC256(secret);
//            // 附带username信息
//            return JWT.create()
//                    .withClaim("id", id)
//                    .withExpiresAt(date)
//                    .sign(algorithm);
//        } catch (UnsupportedEncodingException e) {
//            throw new UnifiedException("token签发错误");
//        }
//    }
//
//    /**
//     * 判断过期
//     *
//     * @param token
//     * @return
//     */
//    public static boolean isExpire(String token) {
//        DecodedJWT jwt = JWT.decode(token);
//        return System.currentTimeMillis() > jwt.getExpiresAt().getTime();
//    }
//}
//